//-------------------------------------------------------------------------------------
// <copyright file="MsiInstallTaskBase.cs" company="Microsoft">
//      Copyright (c) Microsoft Corporation. All rights reserved.
//      THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, 
//      EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 
//      WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
// </copyright>
// <author>Steven Sloggett</author>
// <email>v-stslog@microsoft.com</email>
// <date>2007-04-24</date>
// <summary>
//      Base class for tasks that invoke MsiExec to perform install actions on MSI packages.
// </summary>  
//-------------------------------------------------------------------------------------

namespace Microsoft.Sdc.Tasks.Msi
{
    #region Using directives

    using System;

    #endregion

    /// <summary>
    /// Base class for tasks that invoke MsiExec to perform install actions on MSI packages.
    /// </summary>
    public abstract class MsiInstallTaskBase : MsiTaskBase
    {
        #region Member Variables

        /// <summary>
        /// The features selected to be installed from the MSI. This may be <b>null</b>.
        /// </summary>
        /// <remarks>
        /// This property is not necessary if either the MSI does not have any features, or if you want all features in the
        /// MSI to be installed. If you do wish to select particular features then this is a list of the names.
        /// </remarks>
        private string[] features;

        #endregion

        #region Constructors

        /// <summary>
        /// Initializes a new instance of the MsiInstallTaskBase class.
        /// </summary>
        protected MsiInstallTaskBase()
        {
        }

        #endregion

        #region Public Properties

        /// <summary>
        /// Gets or sets the features selected to be installed from the MSI. This may be <b>null</b>.
        /// </summary>
        /// <remarks>
        /// This property is not necessary if either the MSI does not have any features, or if you want all features in the
        /// MSI to be installed. If you do wish to select particular features then this is a list of the names.
        /// </remarks>
        /// <value>
        /// A list of features selected to be installed from the MSI.
        /// </value>
        public string[] Features
        {
            get
            {
                return (this.features == null) ? new string[0] : this.features;
            }

            set
            {
                this.features = value;
            }
        }

        #endregion
    }
}
